02b2fb
@@ -155,6 +155,7 @@
 
   private static final long DEFAULT_MIN_SPLIT_SIZE = 16 * 1024 * 1024;
   private static final long DEFAULT_MAX_SPLIT_SIZE = 256 * 1024 * 1024;
+  private static final int DEFAULT_ETL_FILE_THRESHOLD = 100;
 
   /**
    * When picking the hosts for a split that crosses block boundaries,
@@ -510,7 +511,7 @@
public boolean validateInput(FileSystem fs, HiveConf conf,
     private final int splitStrategyBatchMs;
     private final long maxSize;
     private final long minSize;
-    private final int minSplits;
+    private final int etlFileThreshold;
     private final boolean footerInSplits;
     private final boolean cacheStripeDetails;
     private final boolean forceThreadpool;
@@ -555,7 +556,7 @@
public boolean validateInput(FileSystem fs, HiveConf conf,
 
       cacheStripeDetails = (cacheStripeDetailsSize > 0);
 
-      this.minSplits = Math.min(cacheStripeDetailsSize, minSplits);
+      this.etlFileThreshold = minSplits <= 0 ? DEFAULT_ETL_FILE_THRESHOLD : minSplits;
 
       synchronized (Context.class) {
         if (threadPool == null) {
@@ -1938,7 +1939,7 @@
private static boolean isStripeSatisfyPredicate(
               deltas, covered, isOriginal, ugi, allowSyntheticFileIds);
         default:
           // HYBRID strategy
-          if (avgFileSize > context.maxSize || totalFiles <= context.minSplits) {
+          if (avgFileSize > context.maxSize || totalFiles <= context.etlFileThreshold) {
             return combineOrCreateETLStrategy(combinedCtx, context, fs, dir, baseOrOriginalFiles,
                 deltas, covered, isOriginal, ugi, allowSyntheticFileIds);
           } else {
